<?php

class ProdutoModel extends GenericModel {

	public function __construct() {
		$this -> setTableName('tb_produto');
		parent::__construct();
	}

	public function buscarProdutosPorCardapio($idCardapio) {
		$querySql = "SELECT * FROM tb_produto WHERE id_cardapio = ?";
		return $this -> query($querySql, array($idCardapio));
	}

	public function buscarVariacoesProduto($idProduto) {
		$querySql = "SELECT * FROM tb_variacao WHERE id_produto = ?";
		return $this -> query($querySql, array($idProduto));
	}

	public function buscarItensVariacao($idVariacao) {
		$querySql = "SELECT * FROM tb_item_variacao WHERE id_variacao = ?";
		return $this -> query($querySql, array($idVariacao));
	}

	public function calculaPreco($idProduto) {
		$querySql = "SELECT SUM(iv.dif_preco) dif_preco
                FROM tb_variacao v INNER JOIN tb_item_variacao iv ON v.id = iv.id_variacao
                WHERE iv.selecionado=1 AND v.id_produto=?";
		return $this -> query($querySql, array($idProduto), TRUE);
	}

	public function buscarProdutoPorPedido($idPedido) {
		$querySql = "SELECT
						pp.id, 
						pp.preco_unitario, 
						pp.qtde, 
						pp.observacoes, 
						p.nome, 
						p.descricao 
					FROM 
						tb_produto_pedido pp 
					INNER JOIN tb_produto p  ON (pp.id_produto = p.id) 
					WHERE id_pedido = ?";
		$res = $this -> query($querySql, array($idPedido));

		if (count($res) > 0) {
			foreach ($res as &$value) {
				$value['variacoes'] = $this -> getVariacoesProduto($value['id']);
			}

		}
		
		return $res;
	}

	public function getVariacoesProduto($idProduto) {

		$querySql = "SELECT 
					    vpp.dif_preco preco,
					    v.nome variacao,
					    iv.nome item_variacao
					FROM 
					    tb_variacao_produto_pedido vpp
					INNER JOIN tb_variacao v ON (vpp.id_variacao = v.id)
					INNER JOIN tb_item_variacao iv ON (vpp.id_item_variacao = iv.id)
					WHERE 
					    id_produto_pedido = ?";

		return $this -> query($querySql, array($idProduto));
	}

}
?>